home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Headers / mach / i386 / vm_param.h < prev    next >
Text File  |  1995-02-14  |  2KB  |  65 lines

  1. /*
  2.  * Copyright (c) 1992 NeXT Computer, Inc.
  3.  *
  4.  * Intel386 Family:    Virtual memory constants.
  5.  *
  6.  * HISTORY
  7.  *
  8.  * 14 April 1992 David E. Bohman at NeXT
  9.  *    Created.
  10.  */
  11.  
  12. #ifndef    _MACH_I386_VM_PARAM_H_
  13. #define _MACH_I386_VM_PARAM_H_
  14.  
  15. #import <sys/types.h>
  16.  
  17. #define BYTE_SIZE    8    /* byte size in bits */
  18. #define BYTE_MSF    0
  19.  
  20. #define I386_PGBYTES    4096    /* bytes per 80386 page */
  21. #define I386_PGSHIFT    12    /* number of bits to shift for pages */
  22.  
  23. /*
  24.  *    Convert bytes to pages and convert pages to bytes.
  25.  *    No rounding is used.
  26.  */
  27.  
  28. #define i386_btop(x)        (((unsigned)(x)) >> I386_PGSHIFT)
  29. #define i386_ptob(x)        (((unsigned)(x)) << I386_PGSHIFT)
  30.  
  31. /*
  32.  *    Round off or truncate to the nearest page.  These will work
  33.  *    for either addresses or counts.  (i.e. 1 byte rounds to 1 page
  34.  *    bytes.
  35.  */
  36.  
  37. #define i386_round_page(x)    ((((unsigned)(x)) + I386_PGBYTES - 1) & \
  38.                     ~(I386_PGBYTES-1))
  39. #define i386_trunc_page(x)    (((unsigned)(x)) & ~(I386_PGBYTES-1))
  40.  
  41. #define VM_MIN_ADDRESS        ((vm_offset_t) 0)
  42. #define VM_MAX_ADDRESS        ((vm_offset_t) 0xc0000000)
  43.  
  44. #define VM_MIN_KERNEL_ADDRESS    ((vm_offset_t) 0x00000000)
  45. #define VM_MAX_KERNEL_ADDRESS    ((vm_offset_t) 0x40000000)
  46.  
  47. #define KERNSTACK_SIZE        (1*I386_PGBYTES)
  48. #define INTSTACK_SIZE        (1*I386_PGBYTES)
  49.  
  50. /*
  51.  *    Conversion between 80386 pages and VM pages
  52.  */
  53.  
  54. #define trunc_i386_to_vm(p)    (atop(trunc_page(i386_ptob(p))))
  55. #define round_i386_to_vm(p)    (atop(round_page(i386_ptob(p))))
  56. #define vm_to_i386(p)        (i386_btop(ptoa(p)))
  57.  
  58. /*
  59.  * Maximum alignment required by any data type for this architecture.
  60.  * (Use 4 bytes for performance reasons....)
  61.  */
  62. #define    MAX_DATA_ALIGNMENT    4        /* 4 bytes */
  63.  
  64. #endif    _MACH_I386_VM_PARAM_H_
  65.